using GroupSix.Domain.Entity.App;
using GroupSix.Domain.common;

namespace GroupSix.Domain.Repositories;

/// <summary>
/// 系统设置日志仓储接口
/// </summary>
public interface ISystemSettingLogRepository : IRepository<GsSystemSettingLog>
{
    /// <summary>
    /// 根据设置键获取日志列表
    /// </summary>
    /// <param name="settingKey">设置键</param>
    /// <param name="page">页码</param>
    /// <param name="pageSize">页大小</param>
    /// <returns>日志列表</returns>
    Task<PageResult<GsSystemSettingLog>> GetLogsBySettingKeyAsync(string settingKey, int page = 1, int pageSize = 20);

    /// <summary>
    /// 根据操作人获取日志列表
    /// </summary>
    /// <param name="operatorId">操作人ID</param>
    /// <param name="page">页码</param>
    /// <param name="pageSize">页大小</param>
    /// <returns>日志列表</returns>
    Task<PageResult<GsSystemSettingLog>> GetLogsByOperatorAsync(Guid operatorId, int page = 1, int pageSize = 20);

    /// <summary>
    /// 获取最近的日志列表
    /// </summary>
    /// <param name="page">页码</param>
    /// <param name="pageSize">页大小</param>
    /// <returns>日志列表</returns>
    Task<PageResult<GsSystemSettingLog>> GetRecentLogsAsync(int page = 1, int pageSize = 20);
} 